Search

Kubernetes 中最常使用的工作單位就是 Deployment,而 Deployment 採用...

  • Share this:

Kubernetes 中最常使用的工作單位就是 Deployment,而 Deployment 採用的更新策略是 RollingUpdate,意味者當更新發生時,會先產生出 n 個新版本的 Pod,並且透過 Readiness 去確認該 Pod 目前可視為正常工作後,就會移除先前版本的 n 個 Pod。

因此本文想要探討的是,如果你想要使用不同的更新策略,你可以怎麼做?

該文章的架構是基於 Argo RollOuts 這個工具來如何達到金絲雀部署與藍綠部署

1. Argo RollOut 的安裝非常簡單,主要操作都是透過 CRD 來完成
2. 對於已經現存的 Deployment 物件,可以非常輕鬆的轉換到 Argo RollOut 的 CRD

#金絲雀部署
金絲雀部署的狀況下,我們會希望能夠把部分的流量先行導入到新的應用程式,接者逐漸調高比例直到最後全面切換過去。這部分可以想像成類似下列的步驟

假設本來有10個舊有應用程式 v1, 現在要升級成 v2.
1. 先部署兩個新版本的應用程式,直到 Readiness 完成後,移除舊有的兩個應用程式
2. 部署人員確認目前狀況良好,決定繼續往下推動,再次部署兩個新的
3. 部署人員再次確認,依序往下部署新的應用程式直到十個都全面替換完成

而上述的過程再 Argo RollOut 會依賴兩個部分完成
1. Yaml 中定義這些步驟
2. 透過 kubectl argo (Plugin) 的方式告訴 Controller 請繼續往下

譬如下列檔案定義步驟
```
strategy:
canary:
steps:
- setWeight: 20
- pause: {}
- setWeight: 40
- pause: {duration: 10}
- setWeight: 60
- pause: {duration: 10}
- setWeight: 80
- pause: {duration: 10}
```
維運人員透過指令要求繼續往下執行

文章後續還有探討如何用 Argo RollOut 來完成藍綠部署,同時部署兩個完整群體,並且透過切換 Service 來指向不同版本的群體

對於想要嘗試不同更新策略的玩家,可以詳細閱讀本文並且玩轉看看 Argo RollOut。

https://medium.com/@ptran32/control-your-kubernetes-deployment-with-argo-rollouts-adb54c4e9b7d


Tags:

About author
目前工作內容主要以 DevOps 為主,本身是微軟 Cloud and Datacenter Management MVP,閒暇之餘會透過文章記錄所學,記錄於 https://www.hwchiu.com. 喜歡參加社群活動來學習不同的經驗,藉此增廣見聞 目前主要參加的社群是 CNTUG,偶而會參加線上 Meetup ,透過網路的方式分享一些心得,並且錄影分享於 Youtube 上
工作與閒暇之餘的學習筆記,紀錄各式各樣的科技文章,同時分享自身部落格文章,線上社群演講以及線上課程資訊
View all posts